---
layout: base
markdown: 0
---
<!--
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<div class="homepage-callout">
  <div class="callout-copy">
      <p><strong>Update Aug 29th 2019: </strong>Hyperledger Composer has been deprecated. Please see the <a href="https://github.com/hyperledger/composer/blob/master/README.md">README</a> for more information.</p>
  </div>
</div>
<div class="content">
    <article class="docs-container">
        <!-- If there's a sidebar, divide into 2 columns -->
        {% if page.sidebar %}
        <div class="page-sidebar-grid" id="off-canvas">
          <!-- <a class="toggle close" href="#">close</a> -->
          <div class="docs-pagenav-grid">
            {% include navbar.html %}
          </div>

          <select id="version" name="version" onchange="location = this.options[this.selectedIndex].value;">
              <option>Select version</option>
              <option value="/composer/latest/introduction/introduction.html" title="The most stable version of Composer">Latest</option>
              <option value="/composer/unstable/introduction/introduction.html" title="The version that will replace Latest">Latest-unstable</option>
          </select>

            <div class="search-form">
              <form action="{{ site.baseurl }}/search/search.html" method="get">
                <!-- <label for="search-box">Search</label> -->

                <input type="text" id="search-box"  class="search-box" name="query" placeholder="Search here...">
                <input type="submit" class="submit-input hide" value="">

                <div class="search-icon">
                  <img src="{{ site.baseurl }}/assets/img/Search_Icon_1.svg" class="trigger" type="submit">
                </div>
              </form>
            </div>

          <div class="docs-current-page-grid">
          <p>{{ page.title }}</p>
          </div>

          <nav class="context-nav">
            {% capture sidebar %}{% include {{ page.sidebar }} %}{% endcapture %}
            {% if sidebarHTML %}
              {{ sidebar }}
            {% else %}
              {{ sidebar | markdownify }}
            {% endif %}
                <div class="docs-footer-grid">
                {% include docsfooter.html %}
                </div>
          </nav>
        </div>
        <div class="page-content-grid">
          <section class="content-chunk">
            <!-- <a class="toggle open" href="#nav">open</a> -->
            {% if page.markdown == 1 %}
              {{ content | markdownify }}
            {% else %}
              {{ content }}
            {% endif %}
          </section>
        </div>
        <!-- Otherwise, have the main content fill all 12 columns... -->
        {% else %}
        <div class="col-md-12">
          <section class="content-chunk">
            {% if page.markdown == 1 %}
              {{ content | markdownify }}
            {% else %}
              {{ content }}
            {% endif %}
          </section>
        </div>
        {% endif %}
      <div class="PageNavigation">
    {% if page.previous.url %}
      <a class="prev" href="{{page.previous.url}}">&laquo; {{page.previous.title}}</a>
    {% endif %}
    {% if page.next.url %}
      <a class="next" href="{{page.next.url}}">{{page.next.title}} &raquo;</a>
    {% endif %}
  </div>
    </article>
</div>
<script>
(function (document) {
    function clipboard_init() {
        var charts = document.querySelectorAll("div.highlight"),
            arr = [],
            i, j, maxItem, pre, btn, el;

        // Make sure we are dealing with an array
        for(i = 0, maxItem = charts.length; i < maxItem; i++) arr.push(charts[i]);

        // Find the UML source element and get the text
        for (i = 0, maxItem = arr.length; i < maxItem; i++) {
            el = arr[i];
            pre = el.childNodes[0];

            pre.id = "hl_code" + i.toString();
            btn = document.createElement('copy-button');
            btn.appendChild(document.createTextNode('Copy'));
            btn.setAttribute("class", "copy-btn");
            btn.setAttribute("data-clipboard-target", "#hl_code" + i.toString());
            el.insertBefore(btn, pre);
        }
        new Clipboard('.copy-btn');
    };

    function onReady(fn) {
        if (document.addEventListener) {
            document.addEventListener('DOMContentLoaded', fn);
        } else {
            document.attachEvent('onreadystatechange', function() {
                if (document.readyState === 'interactive')
                    fn();
            });
        }
    }

    onReady(function(){
        clipboard_init();
    });
})(document);
</script>
<script src="{{site.baseurl}}/assets/js/nav.js"></script>
<script src="{{site.baseurl}}/assets/js/search_bar.js"></script>
